# -*- coding: utf-8 -*-
import os
import time

# Imports PyQt4.
from PyQt4.QtCore import SIGNAL, QObject, QString
from PyQt4.QtGui import *

try:
    _fromUtf8 = QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s
    
# Importa as classes.
from gpib.vna8714c import VNA8714C
from actions.actionsSaveImage import ActionsSaveImage
from config.preferences import SRC_PATH


class ActionsVNA8714C(VNA8714C, ActionsSaveImage):

    def __init__(self, ui, db):
        """
            Construtor.
        """
        self.ui = ui
        self.db = db
        VNA8714C.__init__(self, ui)
        ActionsSaveImage.__init__(self, ui)
        self.connectSlot()
        self.populateTree()




    def connectSlot(self):
        """
            Metodo para conexao dos botoes e acoes dos mesmos.
        """
        QObject.connect(
                        self.ui.pushButtonCopiar,
                        SIGNAL("clicked()"),
                        self.pushButtonCopiarClicked)



    def populateTree(self):
        """
            Metodo para popular treeWidget
        """
        headers = []
        faixas = self.db.getFaixas()
        faixas.sort()
        [headers.append(item) for item in faixas if not headers.count(item)]
        i = 0
        j = len(headers)
        
        while i < j:
            _text = headers[i]
            produto = self.db.popularTree(_text[0])
            text = str(_text[0])
            item = QTreeWidgetItem(self.ui.treeWidget)
            
            self.ui.treeWidget.topLevelItem(i).setText(
               0,
               QApplication.translate(
               "MainWindow",
               text,
               None,
               QApplication.UnicodeUTF8))
               
            m = 0
            n = len(produto)
            
            while m < n:
                item1 = QTreeWidgetItem(item)
                _text1 = produto[m]
                text1 = _text1[0]
                self.ui.treeWidget.topLevelItem(i).child(m).setText(
                    0,
                    QApplication.translate(
                    "MainWindow",
                    text1,
                    None,
                    QApplication.UnicodeUTF8))
                m += 1
            i += 1



    def pushButtonCopiarClicked(self):
        """
            Acao quando o botao copiar e clicado.
        """
        ordemProd = self.ui.lineEditOrdemProd.text()
        if  ordemProd == "":
            QMessageBox.critical(
                                 None,
                                 " TSM ",
                                 _fromUtf8(
                                 "Insira o número da ordem de produção."))
        else:
            os.chdir(SRC_PATH)
            produto = self.nomeDoProduto()
            numeroAntena = self.getNumSerie(produto)
            self.plotLabel(produto, numeroAntena)
            self.getPlot()
            msg = self.messageBoxImagemCorreta()
            if msg == True:
                _msg = self.messageBoxSalvarImagem()
                if _msg == True:
                    self.salvarImagem()
                    _numeroAntena = int(numeroAntena[1])
                    _numeroAntena += 1
                    self.db.updateNumeroAntena(produto, _numeroAntena)
                    os.chdir(SRC_PATH)
                    self.ui.progressBar.setValue(0)
                    self.ui.lineEditOrdemProd.setText("")
                    os.chdir(SRC_PATH)
                else:
                    self.ui.progressBar.setValue(0)
                    self.ui.lineEditOrdemProd.setText("")
                    os.chdir(SRC_PATH)
            else:
                self.ui.progressBar.setValue(0)
                self.ui.lineEditOrdemProd.setText("")
                os.chdir(SRC_PATH)



    def nomeDoProduto(self):
        """
            Metodo que atribui o modelo da antena medida a variavel modAntena.
        """
        item = self.ui.treeWidget.currentItem()
        produto = str(item.text(0))
        _produto = produto.split(" ")
        i = len(_produto)
        i = i -1
        if _produto[i] == "MHz":
            QMessageBox.critical(None,
                                 " TSM ",
                                 _fromUtf8(
                                 "Selecione um Produto."))
        else:
            return produto



    def getNumSerie(self, produto):
        """
            Metodo que obtem o numero fisico, o que e fixado junto a antena 
            para sua identificacao.
        """
        numSerie = self.db.getNumSerieDb(produto)
        return numSerie
